define void @src(ptr %p) null_pointer_is_valid {
  %n2 = load i32, ptr null, align 1
  %add.ptr = getelementptr i8, ptr null, i32 %n2
  call void @llvm.memset.p0.i64(ptr %add.ptr, i8 0, i64 0, i1 false)
  ret void
}

define void @tgt(ptr %p) null_pointer_is_valid {
  %n1 = load i8, ptr null, align 1
  %broadcast.splatinsert = insertelement <1 x i8> poison, i8 %n1, i64 0
  %n2 = icmp ne <1 x i8> %broadcast.splatinsert, zeroinitializer
  %n3 = extractelement <1 x i1> %n2, i64 0
  br i1 %n3, label %if.end16, label %if.end16

if.end16:
  ret void
}

declare void @llvm.memset.p0.i64(ptr, i8, i64, i1)
